package map.oj;

import java.util.HashMap;
import java.util.Map;


public class Num290 {
    /*
    如果key不存在，插入成功，返回null；如果key存在，返回之前对应的value。

    以pattern = "abba", str = "dog cat cat dog"为例，
    第1次：map.put('a',0)返回null，map.put("dog",0)返回null，两者相等；
    第2次：map.put('b',1)返回null，map.put("cat",1)返回null，两者相等；
    第3次：map.put('b',2)返回1，map.put("cat",2)返回1，两者相等；
    第4次：map.put('a',3)返回0，map.put("dog",3)返回0，两者相等，
    结果为 true。

    以pattern = "abba", str = "dog cat cat fish"为例，
    第1次：map.put('a',0)返回null，map.put("dog",0)返回null，两者相等；
    第2次：map.put('b',1)返回null，map.put("cat",1)返回null，两者相等；
    第3次：map.put('b',2)返回1，map.put("cat",2)返回1，两者相等；
    第4次：map.put('a',3)返回0，map.put("fish",3)返回null，两者不相等，
    结果为 false。
    */
    public boolean wordPattern(String pattern, String s) {
        //把s里的字符串用中间的空格分割成字符数组
        String[] words = s.split(" ");
        //字符和单词是相互映射，数量必须相等
        if(words.length != pattern.length()){
            return false;
        }
        Map<Object, Integer> map = new HashMap<>();
        for (Integer i = 0;i < words.length; i++){
            if (map.put(pattern.charAt(i), i) != map.put(words[i], i)){
                return false;
            }
        }
        return true;
    }
}
